package com.atxyj.singleton.model;

/**
 * Singleton模式的实现方式分为两种:饿汉式和懒汉式
 * 单例模式的实现之懒汉式
 * 特点:1、类加载时不会生成实例，只有当第一次调用getInstance()方法时才会创建实例
 * 2、当处于多线程时，不能删除volatile和synchronized关键字，否则会存在线程安全问题
 * 3、如果不删除掉这两个关键字就能保证线程安全，但是每次访问的时候需要同步，会影响性能，且消耗更多资源，这就是懒汉式的缺点
 */
public class LazySingleton {

    private static volatile  LazySingleton instance = null;

    //避免被外部实例化
    private LazySingleton() { }

    public static synchronized LazySingleton getInstance() {
        if(instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }


}
